package com.lovi.controller;

import com.lovi.service.QQServiceImpl;
import com.lovi.utils.ScannerUtils;

import java.io.File;
import java.io.IOException;

/**
 * 用户登录系统和二级菜单的双循环主页面
 */
public class QQView {
    private QQServiceImpl qqService = new QQServiceImpl();
    //主菜单
    public void mainMenu() throws IOException, ClassNotFoundException {
        boolean loop = true;
        while (loop){
            System.out.println("===========欢迎登录网络通信系统===========");
            System.out.println("\t\t 1 登录系统");
            System.out.println("\t\t 9 退出系统");
            System.out.print("请输入你的选择: ");
            String key = ScannerUtils.readString(1);
            switch (key){
                case "1":
                    System.out.println("登录系统");
                    //这里需要用户名和密码
                    System.out.println("请输入用户Id");
                    String userId = ScannerUtils.readString(50);
                    System.out.println("请输入密码");
                    String password = ScannerUtils.readString(50);
                    //调用登录方法，需要服务器验证，我们先不验证
                    boolean serverLoginResult = qqService.login(userId,password);//假设都会是真的
                    if(serverLoginResult){
                        /**
                         * 登录成功，请求读取本用户的离线消息
                         * todo：之后再读取
                         */
                        qqService.getOffLineMessage(userId);
                        //二级菜单
                        //进入到二级菜单
                        System.out.println("登录成功！");
                        while (loop) {
                            System.out.println("\n=========网络通信系统二级菜单(用户 " + userId + " )=======");
                            System.out.println("\t\t 1 显示在线用户列表");
                            System.out.println("\t\t 2 群发消息");
                            System.out.println("\t\t 3 私聊消息");
                            System.out.println("\t\t 4 发送文件");
                            System.out.println("\t\t 9 退出系统");
                            System.out.print("请输入你的选择: ");
                            key = ScannerUtils.readString(1);
                            switch (key) {
                                case "1":
                                    qqService.getOnlineUser();
                                    break;
                                case "2":
                                    System.out.println("请输入要群发的消息");
                                    String conntent2 = ScannerUtils.readString(1000);
                                    qqService.groupChat(conntent2);
                                    break;
                                case "3":
                                    System.out.println("请输入接收者");
                                    String getterUserId = ScannerUtils.readString(10);
                                    System.out.println("请输入要发送的消息");
                                    String conntent = ScannerUtils.readString(1000);
                                    qqService.privateChat(getterUserId, conntent);
                                    break;
                                case "4":
                                    System.out.println("请输入接收者");
                                    String getterUserId2 = ScannerUtils.readString(10);
                                    System.out.println("请输入要发送的文件路径");
                                    String filePath = ScannerUtils.readString(1000);
                                    File file = new File(filePath);
                                    while (!file.exists()){
                                        System.out.println("文件不存在,请重新输入文件名！输入-1退出");
                                        filePath = ScannerUtils.readString(1000);
                                        file = new File(filePath);
                                        if ("-1".equals(filePath)){
                                            break;
                                        }
                                    }
                                    System.out.println("请输入要目标的文件路径");
                                    String targetFilePath = ScannerUtils.readString(1000);
                                    qqService.sendFile(getterUserId2,filePath,targetFilePath);
                                    break;
                                case "9":
                                    System.out.println("退出系统");
                                    loop = false;
                                    qqService.quit();
                                    break;
                            }
                        }

                    }else {
                        System.out.println("用户名或密码错误");
                        break;
                    }
                    break;
                case "9":
                    System.out.println("退出系统");
                    loop = false;
                    break;
                default:
                    System.out.println("输入有误，请重新输入");
            }

        }
    }
}
